Ext.define('AgenteNET.controller.utilitarios.Modulos', {
	extend : 'Ext.app.Controller',
	stores:['utilitarios.Modulos'],
	init : function() {
		this.control({
			'utilitariosModulosList button' : {
				click : this.executarAcao,
			},
			'utilitariosModulosList' : {
				itemdblclick : this.Editar
			},
			'utilitariosModulosNovo' : {
				show : function(win) {
					var form = win.down('form');
					form.down('textfield[name="nome"]').focus(true, 1500);
				}
			},
			'utilitariosModulosNovo button' : {
				click : this.executarAcao
			},
			'utilitariosModulosEditar button' : {
				click : this.executarAcao
			},
			'menuModulos menuitem' : {
				click : this.executarAcao
			}
		});
		this.inicializado = true;
		console.log('Inicializado Modulos');
	},
	executarAcao:function(el){
		var app = this.application, controller = this;
		if (el.controle != undefined)
			controller = app.getController(el.controle);
		if (!controller.inicializado)
			controller.init();
		if (el.acao != undefined)
			if (controller[el.acao] != undefined) {
				Ext.Function.bind(controller[el.acao], controller,
						arguments)();
			}
	},

	Menu:function(){
		var layerControl = Ext.getCmp('ControlLayer');
		layerControl.removeAll();
		layerControl.add(Ext.create('AgenteNET.view.utilitarios.modulos.Menu'));
	},
	Listar : function(el) {
		var animateTarget=(el.$className=="Ext.menu.Item")?Ext.getCmp('ControlLayer'):el;
		this.Menu();
		Ext.getCmp('WorkLayer').removeAll();
		Ext.getCmp('WorkLayer').add(
				Ext.create('AgenteNET.view.utilitarios.modulos.Listar', {
					margin : '10 10 10 10',
					padding : '0 0 0 0 ',
					region : 'center',
					animateTarget: animateTarget,
				}));
	},
	Novo : function(el) {
		var animateTarget=(el.$className=="Ext.menu.Item")?Ext.getCmp('ControlLayer'):el;
		this.Menu();
		var win=Ext.create('AgenteNET.view.utilitarios.modulos.Novo',{
			animateTarget: animateTarget,
		});
		win.down('form').loadRecord(this.getStore('utilitarios.Modulos').model.create({}));
		
	},
	Adicionar: function(el){
		var win=el.up('window'),form=win.down('form'),model=form.getRecord();
		model.set(form.getValues());
		model.save({
			scope:this,
			win:win,
			success : function(model, op) {
				op.win.close();
				this.getStore('utilitarios.Modulos').add(model);
			},
			failure : function(model, op) {
				if (op.error) {
					if (op.error.status == 0) {
						alert('Não foi possivel acessar o servidor '
								+ 'para solicitar a autenticação');
					} else if (op.error.status == 404) {
						alert('Foi possível solicitar '
								+ 'a autenticação do usuário');
					} else if (op.error.status == 403) {
						alert(op.error.msg);
					} else {
						alert(op.error);
					}
				}
			}

		});
	},
	Excluir: function(el){
		var win=null,records=[];
		if(el.up('grid')){
			records=el.up('grid').getSelectionModel().getSelection();
		}else{
			win=el.up('window');
			records[0]=win.down('form').getRecord();
		}
		if(records.length==0){
			Ext.MessageBox.show({
		           title: 'Exclusão de modulos',
		           msg: 'Nenhum modulo foi selecionado para exclusão',
		           buttons: Ext.MessageBox.OK,
		           animateTarget: el,
		           icon: Ext.MessageBox.ERROR
			});
		}
		if(records.length>0){
			Ext.MessageBox.confirm({
		           title: 'Exclusão de modulos',
		           msg:'Confirma a'+(records.length>1?'s':'')+' exclus'+(records.length>1?'ões':'ão')+' do'+(records.length>1?'s':'')+' modulo'+(records.length>1?'s':'')+' '+(records.length>1?'selecionados':''),
		           icon: Ext.MessageBox.QUESTION,
		           buttons: Ext.MessageBox.YESNO,
 		           animateTarget: el,
		            buttonText:{ 
		                yes: "Sim", 
		                no	: "Não" 
		            },
		            scope:this,
		            fn: function(resposta){
		            	if(resposta=='yes'){
		            		this.getStore('utilitarios.Modulos').remove(records);
		            		this.getStore('utilitarios.Modulos').sync();
		            		win.close();
		            	}
		            }
			});
		}
	},
	Editar : function(el,model) {
		var animateTarget=(el.$className=="Ext.menu.Item")?Ext.getCmp('ControlLayer'):el;
		this.Menu();
		var win=Ext.create('AgenteNET.view.utilitarios.modulos.Editar',{
			animateTarget: animateTarget,
		});
		win.down('form').loadRecord(model);
	},
	Salvar: function(el){
		var win=el.up('window'),form=win.down('form'),model=form.getRecord();
		model.set(form.getValues());
		model.save({
			scope:this,
			win:win,
			success : function(model, op) {
				op.win.close();
			},
			failure : function(model, op) {
				if (op.error) {
					if (op.error.status == 0) {
						alert('Não foi possivel acessar o servidor '
								+ 'para solicitar a autenticação');
					} else if (op.error.status == 404) {
						alert('Foi possível solicitar '
								+ 'a autenticação do usuário');
					} else if (op.error.status == 403) {
						alert(op.error.msg);
					} else {
						alert(op.error);
					}
				}
			}

		});
	},

});
